import 'package:aio/aio.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'l10n.dart';
class AppStrings {
  static const AppLocalizationDelegate delegate = S.delegate;

  ///fixme 可以直接对MaterialApp里的localizationsDelegates属性进行赋值。
  static Iterable<LocalizationsDelegate<dynamic>> localizationsDelegates() {
    return const [
      delegate,//fixme app的delegate要放在第一个。不然国际化也可能无效哦。
      LibStrings.delegate,
      //fixme lib里的,必须加上去；不然获取S.of(context).key获取时会报空异常。
      //RefreshLocalizations.delegate,
      //fixme pull_to_refresh 下拉刷新上拉加载更多里的中英文配置。
      GlobalMaterialLocalizations.delegate,
      GlobalCupertinoLocalizations.delegate,
      GlobalWidgetsLocalizations.delegate,
    ];
  }

  static Iterable<Locale> supportedLocales() {
    return S.delegate.supportedLocales;
  }

  ///在需要配置国际化的地方调用S.of(context).key即可.
  ///没有context 时可以使用S.current.key
  static S? _s;

  //fixme App没有语言国际化；S.of(context).key获取时会报空异常。
  //fixme 建议使用LibStrings.of(context). ；少使用 S.of(context). ;方便维护管理。
  static S of(BuildContext? context) {
    return S.of(context!);
  }

  static S current() {
    var s = S.current;
    if (s != null) {
      return s;
    } else {
      if (_s == null) {
        _s = S();
      }
      return _s!;
    }
  }
}
